<template>
  <!-- item.model = 对应的字段了 还是字符串类型的 之后 form.name 直接取值 -->
  <el-form :inline="inline" :model="form" ref="form" label-width="100px">
    <!-- 通过父组件传递的进行循环出来 -->
    <el-form-item v-for="item in formLabel" :key="item.model" :label="item.label">
      <!-- form里面的字段跟item里面的model值一致 form.name  v-if判断的是 默认就是input类型 不传递type进来的话就是true-->
      <el-input
        clearable
        @clear="getuserlist"
        v-model="form[item.model]"
        :placeholder="'请输入' + item.label"
        v-if="!item.type"
      ></el-input>
      <!-- v-if判断的是 默认就是select类型 下拉 -->
      <el-select v-model="form[item.model]" placeholder="请选择" v-if="item.type === 'select'">
        <!-- opts也是父组件传递进来了 -->
        <el-option
          v-for="item in item.options"
          :key="item.value"
          :label="item.label"
          :value="item.value"
        ></el-option>
      </el-select>
      <!-- 开关类型 -->
      <el-switch v-model="form[item.model]" v-if="item.type === 'switch'"></el-switch>
      <!-- 日期选择器 定义一个时间格式-->
      <el-date-picker
        v-model="form[item.model]"
        value-format="yyyy-MM-dd"
        type="date"
        placeholder="选择日期时间"
        v-if="item.type === 'date'"
      ></el-date-picker>
    </el-form-item>
    <!-- 添加一个作用域插槽 进行另一个item表单放置可以是按钮这些 -->
    <el-form-item>
      <slot></slot>
    </el-form-item>
  </el-form>
</template>

<script>
// 表单绑定基本参数就 表单字段 model 描述文本类型   input 类型 或者是 select 类型  label
export default {
  name: "UserForm",
  //定义父组件传递过来的值进行渲染
  props: {
    // 一行显示默认fasle
    inline: Boolean,
    // 数据源
    form: Object,
    // 表单项 v-model双向绑定
    formLabel: Array,
  },
  methods: {
    getuserlist() {
      this.$emit("getuserlists");
    },
    colseDaing() {
      this.$refs.form.resetFields()
      console.log(this.$refs.form);
    }
  },
};
</script>

<style lang="sass" scoped>

</style>